// 一只青蛙一次可以跳上1级台阶，也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
function jumpFloorII(n) {
  // write code here
  let dp = [];
  dp[0] = 1;
  dp[1] = 1;
  dp[2] = 2;
  for (let i = 3; i <= n; i++) {
    let res = 0;
    let temp = i - 1;
    while (temp >= 0) {
      res += dp[temp];
      temp--;
    }
    dp[i] = res;
  }
  return dp[n];
} //第一版，循环的方式，深入思考，dp[5]=dp[0]+dp[1]+dp[2]+dp[3]+dp[4]
//同理 dp[5]=dp[0]+dp[1]+dp[2]+dp[3]+dp[0]+dp[1]+dp[2]+dp[3]
//dp[5]=2*(dp[0]+dp[1]+dp[2]+dp[3])
//dp[5]=2**4*dp[0]
function jumpFloorII(n) {
  // write code here
  return 2 ** (n - 1);
}
